// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using System;
using System.Linq;
using Elastic.Clients.Elasticsearch.Serialization;

namespace Elastic.Clients.Elasticsearch.Xpack;

[System.Text.Json.Serialization.JsonConverter(typeof(Elastic.Clients.Elasticsearch.Xpack.Json.SecurityConverter))]
public sealed partial class Security
{
	[System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
	public Security(Elastic.Clients.Elasticsearch.Xpack.FeatureToggle anonymous, Elastic.Clients.Elasticsearch.Xpack.FeatureToggle apiKeyService, Elastic.Clients.Elasticsearch.Xpack.Audit audit, bool available, bool enabled, Elastic.Clients.Elasticsearch.Xpack.FeatureToggle fips140, Elastic.Clients.Elasticsearch.Xpack.IpFilter ipfilter, Elastic.Clients.Elasticsearch.Xpack.Base operatorPrivileges, System.Collections.Generic.IReadOnlyDictionary<string, Elastic.Clients.Elasticsearch.Xpack.Realm> realms, System.Collections.Generic.IReadOnlyDictionary<string, Elastic.Clients.Elasticsearch.Xpack.RoleMapping> roleMapping, Elastic.Clients.Elasticsearch.Xpack.SecurityRoles roles, Elastic.Clients.Elasticsearch.Xpack.Ssl ssl, Elastic.Clients.Elasticsearch.Xpack.FeatureToggle tokenService)
	{
		Anonymous = anonymous;
		ApiKeyService = apiKeyService;
		Audit = audit;
		Available = available;
		Enabled = enabled;
		Fips140 = fips140;
		Ipfilter = ipfilter;
		OperatorPrivileges = operatorPrivileges;
		Realms = realms;
		RoleMapping = roleMapping;
		Roles = roles;
		Ssl = ssl;
		TokenService = tokenService;
	}
#if NET7_0_OR_GREATER
	public Security()
	{
	}
#endif
#if !NET7_0_OR_GREATER
	[System.Obsolete("The type contains required properties that must be initialized. Please use an alternative constructor to ensure all required values are properly set.")]
	public Security()
	{
	}
#endif
	[System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
	internal Security(Elastic.Clients.Elasticsearch.Serialization.JsonConstructorSentinel sentinel)
	{
		_ = sentinel;
	}

	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.FeatureToggle Anonymous { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.FeatureToggle ApiKeyService { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.Audit Audit { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	bool Available { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	bool Enabled { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.FeatureToggle Fips140 { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.IpFilter Ipfilter { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.Base OperatorPrivileges { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	System.Collections.Generic.IReadOnlyDictionary<string, Elastic.Clients.Elasticsearch.Xpack.Realm> Realms { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	System.Collections.Generic.IReadOnlyDictionary<string, Elastic.Clients.Elasticsearch.Xpack.RoleMapping> RoleMapping { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.SecurityRoles Roles { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.Ssl Ssl { get; set; }
	public Elastic.Clients.Elasticsearch.Xpack.FeatureToggle? SystemKey { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	Elastic.Clients.Elasticsearch.Xpack.FeatureToggle TokenService { get; set; }
}